﻿using BarManager.Core.DomainModel;
using BarManager.Core.DomainService;
using BarManager.Core.Entity;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;

namespace BarManager.Infrastructure.Data.Repository
{
    public class ClienteRepository : BaseRepository<Cliente>, IClienteRepository
    {
        private IDomicilioRepository DomicilioRepository { get; set; }

        public ClienteRepository(IObjectContext context, IDomicilioRepository domicilioRepository)
            : base(context)
        {
            this.DomicilioRepository = domicilioRepository;
        }

        public override void Add(Cliente entity)
        {
            //- Add Master
            Cliente cabecera = new Cliente
            {
                Nombre = entity.Nombre,
                Apellido = entity.Apellido,
                Email = entity.Email,
                Observaciones = entity.Observaciones,
                Telefono1 = entity.Telefono1,
                Telefono2 = entity.Telefono2
            };
            base.Add(cabecera);

            //- Add Details         
            foreach (var item in entity.DomicilioList)
            {
                Domicilio detalle = new Domicilio
                {
                    Barrio = item.Barrio,
                    Calle = item.Calle,
                    Cliente = cabecera,
                    ClienteId = cabecera.Id,
                    Departamento = item.Departamento,
                    EntreCalles = item.EntreCalles,
                    Numero = item.Numero,
                    Piso = item.Piso
                };
                DomicilioRepository.Add(detalle);
            }
        }       
    }
}
